#define _CRT_SECURE_NO_WARNINGS 1

#include "list.h"

//class date
//{
//public:
//	date()
//		:_year(2000)
//		,_month(12)
//		,_day(31)
//	{}
//
//	date(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	date& operator++()
//	{
//		_year++;
//		return *this;
//	}
//
//	date operator++(int)
//	{
//		date tmp = *this;
//		_year++;
//		return tmp;
//	}
//
//	void print()
//	{
//		cout << _year << endl;
//	}
//
//	int _year;
//	int _month;
//	int _day;
//};

//int main()
//{
//	WNF::list<int> list1;
//	list1.push_back(1);
//	list1.push_back(2);
//	list1.push_back(3);
//	list1.push_back(4);
//	list1.push_back(5);
//	list1.push_back(6);
//
//	WNF::list<int>::iterator it = list1.begin();
//	while (it != list1.end())
//	{
//		cout << *it << ' ';
//		++it;
//	}
//	return 0;
//}

//int main()
//{
//	WNF::list<string> lt1;
//	lt1.push_back("hello");
//	lt1.push_back("bit");
//
//	WNF::list<string>::iterator it = lt1.begin();
//	while (it != lt1.end())
//	{
//		cout << it.operator->()->size() << endl;
//		++it;
//	}
//	
//}

//int main()
//{
//	WNF::list<int> ls1 = {1,2,3,4,5};
//	const WNF::list<int> ls2 = ls1;
//
//	for (const auto& e : ls1)
//		cout << e << ' ';
//	cout << endl;
//	for (const auto& e : ls2)
//		cout << e << ' ';
//
//	cout << endl;
//	cout << ls1.size() << ' ' << ls2.size();
//	return 0;
//}

//int main()
//{
//	WNF::list<int> lt1 = {1,2,3,4,5};
//	WNF::list<int> lt2;
//	(lt2 = lt1).push_back(6);
//
//	for (const auto& e : lt1)
//		cout << e << ' ';
//	cout << endl;
//	for (const auto& e : lt2)
//		cout << e << ' ';
//	return 0;
//}

//int main()
//{
//	date d;
//	(++(d++)).print();
//	return 0;
//}

int main()
{
	const WNF::list<int> lt1 = { 1,2,3,4,5 };
	WNF::list<int>::const_iterator it1 = lt1.begin();
	WNF::list<int>::const_reverse_iterator it2 = lt1.rbegin();
	while (it1 != lt1.end())
	{
		cout << *it1 << ' ';
		++it1;
	}
	cout << endl;

	while (it2 != lt1.rend())
	{
		cout << *it2 << ' ';
		it2++;
	}
	cout << endl;

	WNF::list<int>::const_iterator it3 = lt1.begin();
	WNF::list<int>::const_reverse_iterator it4 = lt1.rbegin();

	it3++;
	it3--;
	++it3;
	--it3;

	cout << *it3 << endl;

	it4++;
	it4--;
	++it4;
	--it4;


	cout << *it4 << endl;
	return 0;
}










